/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package guifuncional25;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.ItemListener;
import javax.swing.*;
/**
 *
 * @author mrequejo
 */

public class VentanaGlobal extends JFrame 
                                implements   
                                FocusListener 
                                ,ActionListener
                                                 {
    //Definiciñon de variables:
    public boolean appRunning = false;
    public boolean boletoIntroducido = false;
    int[] numeroAleatorio = {0,0,0,0,0,0};
    int[] boleto = {0,0,0,0,0,0};
    int numerosIguales = 0;
    //Valores a mostrar en el campo de texto resultados:
    int res3de6 = 0;
    int res4de6 = 0;
    int res5de6 = 0;
    int res6de6 = 0;
    int resIntentos = 0;
    int resAños =0 ;
    
    //Definición de componentes gráficos:
     //Campos de texto
    JTextField[] elecciones = new JTextField[6];
    JTextField[] ganadores = new JTextField[6];
    JTextField[] resultados = new JTextField[6];
     //Botones
    JButton parar = new JButton("Parar");
    JButton jugar = new JButton("Jugar");
    JButton reiniciar = new JButton("Reiniciar");
    
    public VentanaGlobal() {
        super("Lotería Primitiva");
        this.createAndShowGUI();
        }
    //Implementación métodos interface ActionListener
    public void actionPerformed(ActionEvent evt) {
        Object fuente = evt.getSource();
        if (fuente == parar) {
            appRunning = false;
            System.out.println("Parar pulsado");
            } else if (fuente == jugar) {
            appRunning = true;
            System.out.println("Jugar pulsado");
        } 
        else if (fuente == reiniciar) {
            System.out.println("Reiniciar pulsado");
            reiniciar();
        }    
    }
    //Implementación métodos interface FocusListener
    public void focusLost(FocusEvent e) {
        //System.out.println("Perdido foco elecciones[5]");
        boletoIntroducido = true;
        String[] texto = new String[6];
        texto[5] = ((JTextField)e.getSource()).getText();
        try {
               boleto[5] = Integer.parseInt(texto[5]);
            } 
            catch (NumberFormatException exc) {
               System.err.println("No se puede convertir a numero");
               exc.printStackTrace();
            }
        for (int i=0;i<5;i++) {
            texto[i] = elecciones[i].getText();
            try {
               boleto[i] = Integer.parseInt(texto[i]);
            } 
            catch (NumberFormatException exc) {
               System.err.println("No se puede convertir a numero");
               exc.printStackTrace();
            }
        }
//        System.out.print("Boleto:");
//        for(int i=0;i<6;i++)
//        System.out.print(" "+Integer.toString(boleto[i]));
//        System.out.println("");
    }
    
    public void focusGained(FocusEvent e) {
      // No hacemos nada
    }   
    
    public void reiniciar() {
        this.appRunning = false;
        this.boletoIntroducido = false;
        for(int i=0;i<6;i++) this.numeroAleatorio[i] = 0;
        for(int i=0;i<6;i++) this.boleto[i] = 0;
        this.numerosIguales = 0;
        this.res3de6 = 0;
        this.res4de6 = 0;
        this.res5de6 = 0;
        this.res6de6 = 0;
        this.resIntentos = 0;
        this.resAños =0 ; 
        for (int i=0; i<6;i++)
        this.elecciones[i].setText("-");
    }   
    
    public void createAndShowGUI(){
        setSize(750, 360);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        // crear panel 1 (1: más arriba, 5: más abajo)
        JPanel panel1 = new JPanel();
        FlowLayout layout1 = new FlowLayout(FlowLayout.CENTER, 10, 10);
        panel1.setLayout(layout1);
        
        JCheckBox checkAuto = new JCheckBox("Automatica");
        JCheckBox checkMan = new JCheckBox("Manual");
        ButtonGroup grupo1 = new ButtonGroup();
        
        grupo1.add(checkAuto);
        grupo1.add(checkMan);
        
        panel1.add(checkAuto);
        panel1.add(checkMan);        

        // crear panel 2
        JPanel panel2 = new JPanel();
        GridLayout layout2 = new GridLayout(2,7,10,10);
        panel2.setLayout(layout2);
        JLabel elecLab = new JLabel("Tus elecciones:");
        JLabel ganLab = new JLabel("Ganadores:");
 
        panel2.add(elecLab);
        for (int i=0; i<6;i++) {
        elecciones[i] = new JTextField();
        panel2.add(elecciones[i]);
        }
        panel2.add(ganLab);
        for (int i=0; i<6;i++) {
        ganadores[i] = new JTextField();
        ganadores[i].setEditable(false);  //No sé si es necesaria esta linea
        panel2.add(ganadores[i]);
        }
        
        //Crear panel 3
        JPanel panel3 = new JPanel();
        FlowLayout layout3 = new FlowLayout(FlowLayout.CENTER,10,10);
        panel3.setLayout(layout3);
        
        panel3.add(parar);
        panel3.add(jugar);
        panel3.add(reiniciar);
        
        //Crear panel 4
        JPanel panel4 = new JPanel();
        GridLayout layout4 = new GridLayout(2, 3, 10, 10);
        panel4.setLayout(layout4);
        
        //para que las etiquetes queden junto a los campos se crean 6 subpaneles,
        //cada uno de los cuales está formados por: etiqueta+campo
     
        JPanel[] subPaneles4 = new JPanel[6];        
       
        for (int i=0; i<6;i++) {
        resultados[i] = new JTextField(10);
        resultados[i].setEditable(false);
        }
        for (int i=0; i<6;i++) {
            subPaneles4[i] = new JPanel();
        }
        
        JLabel r3de6 = new JLabel("3 de 6");
        subPaneles4[0].add(r3de6);
        subPaneles4[0].add(resultados[0]);
        JLabel r4de6 = new JLabel("4 de 6");
        subPaneles4[1].add(r4de6);
        subPaneles4[1].add(resultados[1]);
        JLabel r5de6 = new JLabel("5 de 6");
        subPaneles4[2].add(r5de6);
        subPaneles4[2].add(resultados[2]);
        JLabel r6de6 = new JLabel("6 de 6");
        subPaneles4[3].add(r6de6);
        subPaneles4[3].add(resultados[3]);
        JLabel intentos = new JLabel("Intentos");
        subPaneles4[4].add(intentos);
        subPaneles4[4].add(resultados[4]);
        JLabel años = new JLabel("Años");
        subPaneles4[5].add(años);
        subPaneles4[5].add(resultados[5]);
        
        for (int i=0; i<6;i++) {
            panel4.add(subPaneles4[i]);
        }        
        
        //ponerlos juntos con un Layout global "grid"
        
        GridLayout layoutGral = new GridLayout(5,1,10,10);
        setLayout(layoutGral);
        add(panel1);
        add(panel2);
        add(panel3);
        add(panel4);
        setVisible(true);
        
        //Añadir acciones para manejar eventos a los componentes creados

        parar.addActionListener(this);
        jugar.addActionListener(this);
        reiniciar.addActionListener(this);       
        //Para leer numeros introducidos por el User
        elecciones[5].addFocusListener(this);
    }
    
    public static void main(String[] arguments) {
        //VentanaGlobal pi = new VentanaGlobal();
    }
}


